home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / fs_enet_pd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.4 KB  |  165 lines

  1. /*
  2.  * Platform information definitions for the
  3.  * universal Freescale Ethernet driver.
  4.  *
  5.  * Copyright (c) 2003 Intracom S.A. 
  6.  *  by Pantelis Antoniou <panto@intracom.gr>
  7.  *
  8.  * 2005 (c) MontaVista Software, Inc. 
  9.  * Vitaly Bordug <vbordug@ru.mvista.com>
  10.  *
  11.  * This file is licensed under the terms of the GNU General Public License 
  12.  * version 2. This program is licensed "as is" without any warranty of any 
  13.  * kind, whether express or implied.
  14.  */
  15.  
  16. #ifndef FS_ENET_PD_H
  17. #define FS_ENET_PD_H
  18.  
  19. #include <linux/string.h>
  20. #include <asm/types.h>
  21.  
  22. #define FS_ENET_NAME    "fs_enet"
  23.  
  24. enum fs_id {
  25.     fsid_fec1,
  26.     fsid_fec2,
  27.     fsid_fcc1,
  28.     fsid_fcc2,
  29.     fsid_fcc3,
  30.     fsid_scc1,
  31.     fsid_scc2,
  32.     fsid_scc3,
  33.     fsid_scc4,
  34. };
  35.  
  36. #define FS_MAX_INDEX    9
  37.  
  38. static inline int fs_get_fec_index(enum fs_id id)
  39. {
  40.     if (id >= fsid_fec1 && id <= fsid_fec2)
  41.         return id - fsid_fec1;
  42.     return -1;
  43. }
  44.  
  45. static inline int fs_get_fcc_index(enum fs_id id)
  46. {
  47.     if (id >= fsid_fcc1 && id <= fsid_fcc3)
  48.         return id - fsid_fcc1;
  49.     return -1;
  50. }
  51.  
  52. static inline int fs_get_scc_index(enum fs_id id)
  53. {
  54.     if (id >= fsid_scc1 && id <= fsid_scc4)
  55.         return id - fsid_scc1;
  56.     return -1;
  57. }
  58.  
  59. static inline int fs_fec_index2id(int index)
  60. {
  61.     int id = fsid_fec1 + index - 1;
  62.     if (id >= fsid_fec1 && id <= fsid_fec2)
  63.         return id;
  64.     return FS_MAX_INDEX;
  65.         }
  66.  
  67. static inline int fs_fcc_index2id(int index)
  68. {
  69.     int id = fsid_fcc1 + index - 1;
  70.     if (id >= fsid_fcc1 && id <= fsid_fcc3)
  71.         return id;
  72.     return FS_MAX_INDEX;
  73. }
  74.  
  75. static inline int fs_scc_index2id(int index)
  76. {
  77.     int id = fsid_scc1 + index - 1;
  78.     if (id >= fsid_scc1 && id <= fsid_scc4)
  79.         return id;
  80.     return FS_MAX_INDEX;
  81. }
  82.  
  83. enum fs_mii_method {
  84.     fsmii_fixed,
  85.     fsmii_fec,
  86.     fsmii_bitbang,
  87. };
  88.  
  89. enum fs_ioport {
  90.     fsiop_porta,
  91.     fsiop_portb,
  92.     fsiop_portc,
  93.     fsiop_portd,
  94.     fsiop_porte,
  95. };
  96.  
  97. struct fs_mii_bit {
  98.     u32 offset;
  99.     u8 bit;
  100.     u8 polarity;
  101. };
  102. struct fs_mii_bb_platform_info {
  103.     struct fs_mii_bit     mdio_dir;
  104.     struct fs_mii_bit     mdio_dat;
  105.     struct fs_mii_bit    mdc_dat;
  106.     int delay;    /* delay in us         */
  107.     int irq[32];     /* irqs per phy's */
  108. };
  109.  
  110. struct fs_platform_info {
  111.  
  112.     void(*init_ioports)(struct fs_platform_info *);
  113.     /* device specific information */
  114.     int fs_no;        /* controller index            */
  115.     char fs_type[4];    /* controller type             */
  116.  
  117.     u32 cp_page;        /* CPM page */
  118.     u32 cp_block;        /* CPM sblock */
  119.     u32 cp_command;        /* CPM page/sblock/mcn */
  120.  
  121.     u32 clk_trx;        /* some stuff for pins & mux configuration*/
  122.     u32 clk_rx;
  123.     u32 clk_tx;
  124.     u32 clk_route;
  125.     u32 clk_mask;
  126.  
  127.     u32 mem_offset;
  128.     u32 dpram_offset;
  129.     u32 fcc_regs_c;
  130.     
  131.     u32 device_flags;
  132.  
  133.     int phy_addr;        /* the phy address (-1 no phy) */
  134.     char bus_id[16];
  135.     int phy_irq;        /* the phy irq (if it exists)  */
  136.  
  137.     const struct fs_mii_bus_info *bus_info;
  138.  
  139.     int rx_ring, tx_ring;    /* number of buffers on rx     */
  140.     __u8 macaddr[6];    /* mac address                 */
  141.     int rx_copybreak;    /* limit we copy small frames  */
  142.     int use_napi;        /* use NAPI                    */
  143.     int napi_weight;    /* NAPI weight                 */
  144.  
  145.     int use_rmii;        /* use RMII mode            */
  146.     int has_phy;            /* if the network is phy container as well...*/
  147. };
  148. struct fs_mii_fec_platform_info {
  149.     u32 irq[32];
  150.     u32 mii_speed;
  151. };
  152.  
  153. static inline int fs_get_id(struct fs_platform_info *fpi)
  154. {
  155.     if(strstr(fpi->fs_type, "SCC"))
  156.         return fs_scc_index2id(fpi->fs_no);
  157.     if(strstr(fpi->fs_type, "FCC"))
  158.         return fs_fcc_index2id(fpi->fs_no);
  159.     if(strstr(fpi->fs_type, "FEC"))
  160.         return fs_fec_index2id(fpi->fs_no);
  161.     return fpi->fs_no;
  162. }
  163.  
  164. #endif
  165.